﻿
using CSharpLibs.Annotations;

#pragma warning disable 0169

namespace System
{
	[Builtin, BuiltinImplementation]
	public abstract class Delegate : Object
	{
		private Object target;
	}

	[Builtin]
	public abstract class MulticastDelegate : Delegate
	{
	}

	[Builtin]
	public interface IAsyncResult
	{
	}

	[Builtin]
	public delegate void AsyncCallback(IAsyncResult ar);

	[Builtin]
	public delegate void Action<T1>(T1 arg1);

	[Builtin]
	public delegate int Comparison<T0>(T0 x, T0 y);

	[Builtin]
	public delegate bool Predicate<T0>(T0 obj);

	[Builtin]
	public delegate T1 Func<T0, T1>(T0 arg);

	[Builtin]
	public delegate T3 Func<T0, T1, T3>(T0 arg1, T1 arg2);
}

#pragma warning restore 0169
